package com.sun.tspalgorithm.util;

import com.sun.tspalgorithm.entity.City;

import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;

// JFrame对应窗口，可以理解成是一个画框
public class TestDraw extends JFrame {

    private ArrayList<City> list;

    public TestDraw(ArrayList<City> list) {
        this.list = list;
        //初始化画板
        MyPanel mp = new MyPanel(list);
        //把画板放入到窗口(窗口)
        this.add(mp);
        this.setTitle("最优路径");
        //设置窗口大小
        this.setSize(800, 800);
        this.setLocationRelativeTo(null);
        //当点击窗口的大小x，程序完全退出
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //可以显示
        this.setVisible(true);
    }
}

//先定义一个MyPanel,继承JPanel类，画图形，就在画板上画
class MyPanel extends JPanel {
    private ArrayList<City> list;
    /*
     * 说明：
     * 1.MyPanel 对象就是一个画板
     * 2.Graphics g 把 g 理解成一支笔
     * 3.Graphics 提供了很多绘图方法
     * */

    public MyPanel(ArrayList<City> list) {
        this.list = list;
    }

    // 绘图方法
    @Override
    public void paint(Graphics g) {
        ArrayList<City> list = this.list;
        super.paint(g);//调用父类方法完成初始化

        //调用绘制图形方法
        for (int i = 0; i < list.size() - 1; i++) {
            g.setColor(Color.black);
            g.drawString(i+":"+list.get(i).toString(), list.get(i).getXint()*10, list.get(i).getYint()*10);
            g.drawLine(list.get(i).getXint() * 10, list.get(i).getYint() * 10, list.get(i + 1).getXint() * 10, list.get(i + 1).getYint() * 10);
        }
    }
}
